package com.zt.chatgpt.config.GoogleGuavaCodeCache;

import com.google.common.cache.Cache;
import com.google.common.cache.CacheBuilder;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;

import java.util.concurrent.TimeUnit;

/**
 * @author: zt
 * @Description: 缓存服务
 * @create: 2024-05-18 23:59
 */

@Configuration
public class GoogleGuavaCodeCacheConfig {
    /**
     * 鉴权验证码缓存对象在写入后3分钟过期
     *
     * @return Cache<String, String> 返回一个字符串键值对的缓存对象，其中键和值都是字符串类型。
     */
    @Bean(name = "codeCache")
    public Cache<String, String> codeCache() {
        return CacheBuilder.newBuilder()
                .expireAfterWrite(3, TimeUnit.MINUTES)
                .build();
    }

    /**
     *
     * 用户访问频次缓存对象在写入后的12小时后过期
     *
     * @return Cache<String, Integer> 返回一个配置好的缓存实例，其中键是字符串类型，值是整型。
     */
    @Bean(name = "visitCache")
    public Cache<String, Integer> visitCache() {
        return CacheBuilder.newBuilder()
                .expireAfterWrite(12, TimeUnit.HOURS)
                .build();
    }

}
